import { defineStore } from 'pinia'
import type { ClassInfo } from '../types/ClassInfo'
import {listClassesByCounselorUsingGet} from "../../Api/banjimokuai";

/**
 * 班级信息存储模块
 * 负责管理班级相关数据的全局状态
 */
export const useClassInfoStore = defineStore('classInfo', {
    // 持久化配置
    persist: {
        storage: localStorage,
        paths: ['classInfoList', 'currentClassInfo']
    },
    // 状态定义
    state: () => ({
        // 班级列表，存储所有班级信息
        classInfoList: [] as ClassInfo[],

        // 当前选中的班级，用于详情查看或编辑
        currentClassInfo: null as ClassInfo | null,

        // 加载状态标记
        loading: false
    }),

    // 操作方法
    actions: {
        /**
         * 获取所有班级信息
         */
        async fetchAllClassInfo(classInfoList1) {
            this.classInfoList = classInfoList1
        },

        /**
         * 添加新班级
         * @param newClassInfo - 新班级信息对象
         */
        addClassInfo(newClassInfo: ClassInfo) {

        },

        /**
         * 更新班级信息
         * @param updatedClassInfo - 更新后的班级信息对象
         */
        updateClassInfo(updatedClassInfo: ClassInfo) {
            const index = this.classInfoList.findIndex(c => c.classId === updatedClassInfo.classId)
            if (index !== -1) {
                this.classInfoList[index] = updatedClassInfo
            }
        }
    },

    // 计算属性
    getters: {
        /**
         * 根据辅导员ID获取班级列表
         * @param counselorId - 辅导员ID
         * @returns 该辅导员负责的班级数组
         */
        classesByCounselorId: (state) => (counselorId: number) =>
            state.classInfoList.filter(c => c.counselorId === counselorId),

        /**
         * 根据专业名称获取班级列表
         * @param major - 专业名称
         * @returns 该专业的班级数组
         */
        classesByMajor: (state) => (major: string) =>
            state.classInfoList.filter(c => c.major === major)
    }
})
